package Java常用工具API.Object类.JavaBean类重写Object类中的方法;

import java.util.Objects;

public class Standard {//定义一个标准JavaBean类
    //成员变量
    private String name;
    private int num;
    private String work;

    //构造方法
    public Standard() {//无参构造方法
    }

    public Standard(String name, int num, String work) {//全参构造方法
        this.name = name;
        this.num = num;
        this.work = work;
    }
    //成员方法（包含成员变量相对应的get/set方法）

    public String getName() {//返回name变量的值
        return name;
    }

    public void setName(String name) {//获得一个值，赋给name变量
        this.name = name;
    }

    public int getNum() {//返回num变量的值
        return num;
    }

    public void setNum(int num) {//获得一个值，赋给num变量
        this.num = num;
    }

    public String getWork() {//返回work变量的值
        return work;
    }

    public void setWork(String work) {//获得一个值，赋给work变量
        this.work = work;
    }

    @Override
    public String toString() {
        return "Standard{" +
                "name='" + name + '\'' +
                ", num=" + num +
                ", work='" + work + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {//o原本是Standard类对象，但是在调用这个方法时，赋给了Object类，会自动向上转型为Object类型
        /*
        this ：谁调用，this就表示谁。     //比较代码：s.equals(s2)
        这里this表示：s       o表示：s2

         */
        if (this == o)
            return true;//if如果后面只有一行代码，可以省略{}
        if (o == null || getClass() != o.getClass())
       // if (o == null || this.getClass() != o.getClass())
            return false;//getClass()是this.getClass()简写，系统会自动补上this
        Standard standard = (Standard) o;
        //因为o是Object类型，是Standard父类，不能调用子类特有成员。需要转换类型
        return num == standard.num && name.equals(standard.name) && work.equals(standard.work);
        //这行代码是下面这行代码简写.系统会自动补足this
        //return this.num == standard.num && this.name.equals(standard.name) && this.work.equals(standard.work);
    }

}
